<?php

class Depense extends CI_Model
{
	const TABLE_DEPENSE							= 'depense';
	const ID_DEPENSE							= 'IDDepense';
	const LIBELLE_DEPENSE 						= 'LibelleDepense';
	const BUDGET_DEPENSE 						= 'BudgetDepense';
	const FOURNISSEUR_DEPENSE					= 'Fournisseur';
	const ID_ACTION_DEPENSE						= 'IDAction';
	const AUTEUR_DEPENSE						= 'AuteurDepense';
	
		/*Attributs*/
	/**
	 * @var int
	 */
	private $id;
	
	/**
	 * @var string
	 */
	private $libelle;
	
	/**
	 * @var float
	 */
	private $bugdet;
	
	/**
	 * @var string
	 */
	private $fournisseur;
	
	/**
	 * @var int
	 */
	private $idAdc;
	
	/**
	 * @var int
	 */
	private $auteurDepense;
	
	/*Constructeur */
	
	public function __construct()
	{
		parent::__construct();
	}

	
	/*Methode BDD*/
	
	/**
	 * Fonction permettant de récupérer une dépense ne fonction de l'identifiant de l'action
	 * @param integer $id identifiant de l'action
	 * @return Depense une dépense 
	 */
	public static function findByIdAction($idAction)
	{
		$CI = get_instance();
			
		$CI->load->database('db_adc', true);
			
		$resultat = $CI->db	->select(Depense::ID_DEPENSE.','.Depense::LIBELLE_DEPENSE.','.Depense::BUDGET_DEPENSE.','.Depense::FOURNISSEUR_DEPENSE.','.Depense::ID_ACTION_DEPENSE.','.Depense::AUTEUR_DEPENSE)
							->from(Depense::TABLE_DEPENSE)
							->where(Depense::ID_ACTION_DEPENSE, $idAction)
							->get()
							->result_array();
			
		if(!empty($resultat))
		{
			foreach($resultat as $result)
			{
				$depense = new Depense();
				$depense->setId($result[Depense::ID_DEPENSE]);
				$depense->setLibelle($result[Depense::LIBELLE_DEPENSE]);
				$depense->setBudget($result[Depense::BUDGET_DEPENSE]);
				$depense->setFournisseur($result[Depense::FOURNISSEUR_DEPENSE]);
				$depense->setIdAdc($result[Depense::ID_ACTION_DEPENSE]);
				$depense->setAuteurDepense($result[Depense::AUTEUR_DEPENSE]);
				$d[]=$depense;
			}
			return $d;
		}
		return false;
	}
	
	/**
	 * Fonction permettant d'ajouter une depense
	 * @return true ou false
	 */
	public function addDepense()
	{
		$CI = get_instance();
	
		$CI->load->database('db_adc', true);
	
		$CI->db->set(self::LIBELLE_DEPENSE, $this->getLibelle());
		$CI->db->set(self::BUDGET_DEPENSE, $this->getBudget());
		$CI->db->set(self::FOURNISSEUR_DEPENSE, $this->getFournisseur());
		$CI->db->set(self::ID_ACTION_DEPENSE, $this->getIdAdc());
		$CI->db->set(self::AUTEUR_DEPENSE, $this->getAuteurDepense());
			
	
		return $CI->db->insert(self::TABLE_DEPENSE);
	}
	
	/**
	 * Fonction permettant de modifier une depense
	 * @return true ou false
	 */
	public static function modifyDepense()
	{
		$CI = get_instance();
	
		$CI->load->database('db_adc', true);
			
		$CI->db->set(self::LIBELLE_DEPENSE, $this->getLibelle());
		$CI->db->set(self::BUDGET_DEPENSE, $this->getBudget());
		$CI->db->set(self::FOURNISSEUR_DEPENSE, $this->getFournisseur());
		$CI->db->set(self::ID_ACTION_DEPENSE, $this->getIdAdc());
		$CI->db->set(self::AUTEUR_DEPENSE, $this->getAuteurDepense());
	
		$CI->db->where(self::ID_DEPENSE, (int)$this->getId());
	
		return $CI->db->update(self::TABLE_DEPENSE);
	}
	
	/**
	 * Fonction permettant de supprimer une depense
	 * @return true ou false
	 */
	public static function delDepense($idAction)
	{
		$CI = get_instance();
	
		$CI->load->database('db_adc', true);
			
		$resultat = $CI->db->where(Depense::ID_ACTION_DEPENSE, $idAction)
							->delete(Depense::TABLE_DEPENSE);
	
		return $resultat;
	}
	
	/*Getters et Setters*/
	
	
	/**
	 * get Id
	 * 
	 * @return int
	 */
	public function getId()
	{
		return $this->id;
	}
	
	/**
	 * set Id
	 *
	 * @return int
	 */
	public function setId($id)
	{
		$this->id=$id;
	}
	
	/**
	 * get Libelle
	 * 
	 * @return int
	 */
	public function getLibelle()
	{
		return $this->libelle;
	}
	
	/**
	 * set Libelle
	 * 
	 * @param string
	 */
	public function setLibelle($libelle)
	{
		$this->libelle=$libelle;
	}
	
	/**
	 * get budget
	 * 
	 * @return float
	 */
	public function getBudget()
	{
		return $this->budget;
	}
	
	/**
	 * set Budget
	 * 
	 * @param float
	 */
	public function setBudget($budget)
	{
		$this->budget=$budget;
	}
	
	/**
	 * get fournisseur
	 * 
	 * @return string
	 */
	public function getFournisseur()
	{
		return $this->fournisseur;
	}
	
	/**
	 * setFournisseur
	 * 
	 * @param float
	 */
	public function setFournisseur($fournisseur)
	{
		$this->fournisseur=$fournisseur;
	}	/**
	 * get Id Adc
	 * 
 	 * @return int
	 */
	public function getIdAdc()
	{
		return $this->idAdc;
	}
	
	/**
	 * set Id Adc
	 * 
	 * @param int
	 */
	public function setIdAdc($adc)
	{
		$this->idAdc=$adc;
	}
	
	/**
	 * @return Etudiants
	 */
	public function getEtudiant($idAction)
	{
		$CI = get_instance();
    	$CI->load->database('db_adc', true);
    	$idEtudiant = $CI->db	->select(Depense::ID_ETUDIANT_DEPENSE)
						    	->from(Depense::TABLE_DEPENSE)
						    	->where(Depense::ID_ACTION_DEPENSE, $idAction)
						    	->limit(1)
						    	->get()
						    	->result_array();
    	
    	if(!empty($idEtudiant))
    	{
			$etudiant = Etudiants::findById($idEtudiant[Depense::ID_ETUDIANT_DEPENSE]);
			return $etudiant;
    	}
    	else
    		return false;
	}
	
	
	/**
	 * @return int
	 */
	public function getAuteurDepense()
	{
		return $this->auteurDepense;
	}
	
	/**
	 * @param int
	 */
	public function setAuteurDepense($auteur)
	{
		$this->auteurDepense=$auteur;
	}
	
	
}
	
	
?>